#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
html_text ='''
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="songs-list">
    <h2 class="title">经典老歌</h2>
    <p class="introduction">
        经典老歌列表
    </p>
    <ul id="list" class="list-group">
        <li data-view="2">一路上有你</li>
        <li data-view="7">
            <a href="/2.mp3" singer="任贤齐">沧海一声笑</a>
        </li>
        <li data-view="4" class="active">
            <a href="/3.mp3" singer="齐秦">往事随风</a>
        </li>
        <li data-view="6"><a href="/4.mp3" singer="beyond">光辉岁月</a></li>
        <li data-view="5"><a href="/5.mp3" singer="陈慧琳">记事本</a></li>
        <li data-view="5">
            <a href="/6.mp3" singer="邓丽君">但愿人长久</a>
        </li>
    </ul>
</div>
</body>
</html>
'''

# 使用re正则表达式模块的compile方法创建正则表达式，采用re.S（点任意匹配模式）
pattern = re.compile('<li.*?>(.*?)</', re.S)
# 调用re.findall方法通过正则表达式爬取书籍信息
items = re.findall(pattern, html_text)
# print(type(items)) #<class 'list'>

#外面定义1个空的列表
songs = []
for item in items:
    # print(type(item))  #<class 'str'>
    if item.find("<a") == -1: #如果是-1，表示不存在a标签
        pattern = re.compile('<li.*?>(.*?)</', re.S)
        items = re.findall(pattern, html_text)
        print(items[0])
        songs.append(items[0])
    else:
        pattern = re.compile('<li.*?<a.*?>(.*?)</', re.S)
        items = re.findall(pattern, html_text)
        print(items)
        songs=songs+items
        # 现在数据找出来了，又执行了循环，我只需要找出所有数据，就停止循环
        if len(items)==5: #已经查出来所有数据了，停止循环
            break
print(songs)

#把这个内容保存到1个文件里
with open("./songs.txt", 'w', encoding='utf-8') as file:
    for song in songs:
        file.write(song+"\n")
